home *** CD-ROM | disk | FTP | other *** search
/ El Mac 9 / El Mac 9.iso / Shareware / Applications / Charting Coach v1.5 / Charting Coach v1.dxr / 00514.ls < prev    next >
Encoding:
Text File  |  1996-04-08  |  5.6 KB  |  213 lines

  1. on getSerialDate datestr
  2.   if integerp(datestr) then
  3.     return datestr
  4.   else
  5.     setDelimiter("/")
  6.     set month to value(item 1 of datestr)
  7.     if (month > 12) or (month < 1) then
  8.       setDelimiter()
  9.       return(O)
  10.     end if
  11.     set day to value(item 2 of datestr)
  12.     set year to value(item 3 of datestr)
  13.     set year to getFullYear(year)
  14.     set year to year - 1995
  15.     set sumdays to 0
  16.     set leapyear to 0
  17.     repeat with tempyear = 0 to year
  18.       set leapyear to IsLeapYear(tempyear + 1995)
  19.       if leapyear = 0 then
  20.         set numDaysInMonth to [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  21.       else
  22.         set numDaysInMonth to [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  23.       end if
  24.       if tempyear < year then
  25.         set sumdays to sumdays + 365 + leapyear
  26.         next repeat
  27.       end if
  28.       repeat with curMonth = 1 to month - 1
  29.         set sumdays to sumdays + getAt(numDaysInMonth, curMonth)
  30.       end repeat
  31.       if (day < 0) or (getAt(numDaysInMonth, month) < day) then
  32.         setDelimiter()
  33.         return(O)
  34.       else
  35.         set sumdays to sumdays + day
  36.       end if
  37.       setDelimiter()
  38.       return sumdays + 99995
  39.     end repeat
  40.   end if
  41. end
  42.  
  43. on getDayOfWeek datestr
  44.   set DayOfWeekList to [#Saturday, #Sunday, #Monday, #Tuesday, #Wednesday, #Thursday, #Friday]
  45.   if integerp(datestr) then
  46.     set serialdate to datestr
  47.   else
  48.     set serialdate to getSerialDate(datestr)
  49.   end if
  50.   set dayofweek to getAt(DayOfWeekList, (serialdate mod 7) + 1)
  51.   return dayofweek
  52. end
  53.  
  54. on getMonth datestr
  55.   set MonthList to [#January, #February, #March, #April, #May, #June, #July, #August, #September, #October, #November, #December]
  56.   if integerp(datestr) then
  57.     set datestr to getDate(datestr)
  58.   end if
  59.   setDelimiter("/")
  60.   set month to value(item 1 of datestr)
  61.   setDelimiter()
  62.   set monthtext to getAt(MonthList, month)
  63.   return monthtext
  64. end
  65.  
  66. on sum mylist
  67.   set mysum to 0
  68.   repeat with i = 1 to count(mylist)
  69.     set mysum to mysum + getAt(mylist, i)
  70.   end repeat
  71.   return mysum
  72. end
  73.  
  74. on setDelimiter delimiterchar
  75.   global oldDelimiter
  76.   if delimiterchar = 0 then
  77.     if oldDelimiter = 0 then
  78.       set the itemDelimiter to ","
  79.     else
  80.       set the itemDelimiter to oldDelimiter
  81.     end if
  82.     return oldDelimiter
  83.   end if
  84.   set oldDelimiter to the itemDelimiter
  85.   if stringp(delimiterchar) then
  86.     set the itemDelimiter to char 1 of delimiterchar
  87.   else
  88.     set the itemDelimiter to numToChar(delimiterchar)
  89.   end if
  90.   return oldDelimiter
  91. end
  92.  
  93. on GetLongDate datestr
  94.   set MonthList to ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
  95.   if integerp(datestr) then
  96.     set datestr to getDate(datestr)
  97.   end if
  98.   setDelimiter("/")
  99.   set year to value(item 3 of datestr)
  100.   set month to value(item 1 of datestr)
  101.   set day to value(item 2 of datestr)
  102.   if year < 100 then
  103.     if year < 95 then
  104.       set year to year + 100
  105.     end if
  106.     set year to 1900 + year
  107.   end if
  108.   set longdatestr to getDayOfWeek(datestr) & ", " & getAt(MonthList, month) && day & ", " & year
  109.   return longdatestr
  110. end
  111.  
  112. on getDate serialdate
  113.   set serialdate to serialdate - 99995
  114.   set currentyear to 1995
  115.   if serialdate > 0 then
  116.     set serialdate to serialdate - 366
  117.     repeat while serialdate > 0
  118.       set serialdate to serialdate - (365 + IsLeapYear(currentyear))
  119.       set currentyear to currentyear + 1
  120.     end repeat
  121.     set serialdate to serialdate + (365 + IsLeapYear(currentyear))
  122.   else
  123.     set serialdate to -serialdate
  124.     repeat while serialdate >= 0
  125.       set currentyear to currentyear - 1
  126.       set seriaIdate to serialdate - (365 + IsLeapYear(currentyear))
  127.     end repeat
  128.     set serialdate to -serialdate - 1
  129.   end if
  130.   if IsLeapYear(currentyear) = 0 then
  131.     set numDaysInMonth to [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  132.   else
  133.     set numDaysInMonth to [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  134.   end if
  135.   repeat with month = 1 to 12
  136.     set monthdays to getAt(numDaysInMonth, month)
  137.     set serialdate to serialdate - monthdays
  138.     if serialdate < 0 then
  139.       set serialdate to serialdate + monthdays
  140.       exit repeat
  141.     end if
  142.   end repeat
  143.   set day to serialdate + (1 - IsLeapYear(currentyear))
  144.   if (month = 13) and (day = 1) then
  145.     set month to 1
  146.     set day to 1
  147.     set currentyear to currentyear + 1
  148.   end if
  149.   if day = 0 then
  150.     if month > 1 then
  151.       set month to month - 1
  152.     else
  153.       set month to 12
  154.     end if
  155.     set day to getAt(numDaysInMonth, month)
  156.   end if
  157.   set datestr to string(month & "/" & day & "/" & chars(string(currentyear), 3, 4))
  158.   return datestr
  159. end
  160.  
  161. on AddDate datestr, numDays
  162.   set curserdate to getSerialDate(datestr)
  163.   if curserdate = 0 then
  164.     cursor(0)
  165.     alert("The date entered is invalid")
  166.     exit
  167.   else
  168.     set newdatestr to getDate(curserdate + numDays)
  169.   end if
  170.   return newdatestr
  171. end
  172.  
  173. on differenceDate datestr1, datestr2
  174.   set diff to getSerialDate(datestr2) - getSerialDate(datestr1)
  175.   return diff
  176. end
  177.  
  178. on getFullYear year
  179.   if (year >= 0) and (year < 100) then
  180.     if year < 95 then
  181.       set fullyear to year + 100
  182.     else
  183.       set fullyear to year
  184.     end if
  185.     set fullyear to fullyear + 1900
  186.   else
  187.     if (year > 1786) and (year < 10000) then
  188.       set fullyear to year
  189.     else
  190.       set fullyear to 0
  191.     end if
  192.   end if
  193.   return integer(fullyear)
  194. end
  195.  
  196. on IsLeapYear year
  197.   set tempyear to getFullYear(year)
  198.   if (tempyear mod 4) = 0 then
  199.     if (tempyear mod 100) = 0 then
  200.       if (tempyear mod 400) = 0 then
  201.         set leapyear to 1
  202.       else
  203.         set leapyear to 0
  204.       end if
  205.     else
  206.       set leapyear to 1
  207.     end if
  208.   else
  209.     set leapyear to 0
  210.   end if
  211.   return leapyear
  212. end
  213.